A Support Vector Machine (SVM) is a powerful tool for learning pattern classification. An SVM algorithm accepts as input a training set of labeled data instances. Each data instance is described by a vector of features, which may be of very high dimension, and the label of an instance is a binary variable that separates the instances into two types. The SVM learns a classification rule that can then be used to predict the label of unseen data instances.
For example, in an object recognition task, the algorithm accepts example images of a target object (e.g., a car) and other objects, and learns to classify whether a new image contains a car. The output of the SVM learning algorithm is a weight (which may be positive or negative) that is applied to each of the features, and which is then used for classification. A large positive weight means that the feature is likely to have high values for matching patterns (e.g., a car was detected), and vice versa. The prediction of a label is then made by combining (summing) the weighted votes of all features and comparing the result to a threshold level.
The features used by the algorithm can be raw features (e.g., pixel gray level) or more complex calculated features such as lines, edges, textures. In many real-world applications, there is a huge set of candidates of features (which can easily reach millions). However, working with such a huge set, even on modern computer systems, is usually infeasible, and such a classifier is thus very inefficient.